﻿var fs=require('fs');
var path=require('path');
var catnode_utils=require('./catnode_utils.js');
var cmd_doc2pdf='"f:\\Program Files (x86)\\OpenOffice.org 3\\program\\python.exe" '+__dirname+'/unoconv -f pdf ';
var cmd_pdf2swf='"F:\\Program Files (x86)\\SWFTools\\pdf2swf" ';
var cmd_swf2jpg="";
var doc_root=__dirname+"\\test\\";
var running=false;
var fileformats={'ppt':'ppt','pptx':'pptx','doc':'doc','docx':'docx','xls':'xls','xlsx':'xlsx'};
setInterval(function(){
	if(running){ //由于 child_process.exec 及 fs.readdir 是异步的，所以，可能在本次任务还没有执行完时，就会进入下一次任务执行。
		console.log('running');
		return;
	}
	running=true;
	//扫描是否有新的文件
	fs.readdir(doc_root, function(err,files){
		if(err){
			console.log(err);
			throw err;
		}
		var exec = require('child_process').exec;
		var to_pdf=function(i,files){
			if(i>files.length-1){//转换到最后一个文件时，标记本次任务执行完毕
				running=false;
				console.log('end');
				return;
			}
			var file=files[i];
			var filename=file.substr(0,file.lastIndexOf("."));
			var fileformat=file.substr(file.lastIndexOf(".")+1,file.length);
			if(fileformat=='pdf'){ //如果是pdf，直接转swf
				to_swf(file,true);
				i++;
				to_pdf(i,files);
				return;
			}
			if(!fileformats[fileformat]){ //文件类型不支持，转下一个文件
				console.log('fileformat:'+fileformat);
				i++;
				to_pdf(i,files);
				return;
			}
			var topdf=exec(cmd_doc2pdf+doc_root+file);
			topdf.stderr.setEncoding('utf8');
			topdf.stdout.on('data', function (data) {
				console.log('stdout: ' + data);
			});
			topdf.stderr.on('data', function (data) {
				console.log('stderr: ' + data);
			});
			topdf.on('exit', function (code) {
				console.log('to_pdf exit: ' + code);
				if(code!=0){
					return;
				}
				//转swf
				to_swf(file);
				//转换下一个文件
				i++;
				to_pdf(i,files);
			});
		};
		var to_swf=function(file,is_pdf){
			var filename=file.substr(0,file.lastIndexOf("."));
			var src_file=doc_root+filename+".pdf";
			var dest_file=doc_root+filename+".swf";
			var toswf=exec(cmd_pdf2swf+src_file+" -o "+dest_file);
			toswf.on("exit",function(code){
				console.log('to_swf exit:'+code);
				if(code!=0){
					return;
				}
				move2dest(file);
				if(is_pdf){ //原始文件是pdf文件
					return;
				}
				fs.unlink(src_file,function(err){
					if(err){
						console.log(err);
					}
				});//删除中间生成的pdf文件
				
			});
		}
		
		var move2dest=function(file){ //转swf完成后，将原始文件及swf文件移到目标目录
			var filename=file.substr(0,file.lastIndexOf("."));
			var dest_path=catnode_utils.dest_doc_path(doc_root,filename);
			fs.rename(doc_root+file,doc_root+dest_path+path.sep+file,function(err){
				if(err){
					console.log(err);
				}
			});
			fs.rename(doc_root+filename+".swf",doc_root+dest_path+path.sep+filename+".swf",function(err){
				if(err){
					console.log(err);
				}
			});
		}
		// openoffice 单线程执行，所以只能一个文件转换完后，再转换下一个文件
		to_pdf(0,files);		
	});
},10000);